home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 26 / Cream of the Crop 26.iso / doom / turric03.zip / TURRIC03.ZIP / PROGS / LAZSIGHT.QC < prev    next >
Text File  |  1997-01-07  |  3KB  |  132 lines

  1. ////////////////////////////////////////////
  2. // laser targeter functions
  3.  
  4. // free player entity variable
  5. // '.float speed'  bit-flag defines:
  6. float LASERTARG_LIT = 2;
  7. float LASERTARG_ON  = 1;
  8.  
  9.  
  10. // targeter ent. think function
  11.  
  12. void() LaserTargeterTrack = {
  13.    local vector src;
  14.  
  15.    if (self.owner.morphnum != 0)
  16.    {
  17.       remove(self);
  18.       return;
  19.    }
  20.  
  21.    if (! (self.owner.speed & LASERTARG_ON))
  22.    {
  23.       if( (self.owner.speed & LASERTARG_LIT) )
  24.       {
  25.          self.owner.speed = self.owner.speed | LASERTARG_ON;
  26.          self.effects = self.effects | EF_DIMLIGHT;
  27.       }
  28.       else
  29.       {
  30.          remove( self );
  31.          return;
  32.       }
  33.    }
  34.  
  35.    makevectors( self.owner.v_angle );
  36.  
  37.    src = self.owner.origin + v_forward * 10;
  38.    src_z = self.owner.absmin_z + self.owner.size_z * 0.7;
  39.  
  40.    traceline( src,  src + v_forward * 2048, FALSE, self.owner);
  41.  
  42. //** PATCH_BEGIN - lazsight ****
  43. // Added from Scott Ramsay's lazsight patch
  44.     if (trace_fraction == 1.0)
  45.     {
  46. // move sight inside player if can't hit anything
  47.         setorigin(self, self.owner.origin );
  48.         return;
  49.     }
  50.  
  51. // check if target is damageable and set proper model
  52. //** PATCH_BEGIN - lazsight - Turrican ****
  53. // Using the laser sight model from Ultimate Quake.
  54.     if (trace_ent.takedamage)
  55.     {
  56.         self.skin = 1;
  57.         setmodel (self, "progs/lazsight.mdl");
  58.         if(time > self.wait)
  59.         {
  60.             sound (self.owner, CHAN_ITEM, "weapons/lazsight.wav", 0.1, ATTN_NORM);
  61.             self.wait = time + 0.5;
  62.         }
  63.     }
  64.     else
  65.     {
  66.         self.skin = 0;
  67.         setmodel (self, "progs/lazsight.mdl");
  68.     }
  69. //** PATCH_END - lazsight - Turrican ******
  70.  
  71. // move sight at line of sight collision
  72.     self.angles = vectoangles(v_forward);
  73.     setorigin(self, trace_endpos );
  74. //    setorigin( self, (0.1 * src + 0.9 * trace_endpos) );
  75. //** PATCH_END - lazsight ******
  76.  
  77.    self.nextthink = time + 0.05;
  78.  
  79. };
  80.  
  81. void( entity targ_owner ) LaserTargeterToggle =
  82. {
  83.  
  84.    local entity e;
  85.  
  86.    if( (targ_owner.speed & LASERTARG_ON) )
  87.    {
  88.       if( (targ_owner.speed & LASERTARG_LIT) )
  89.       {
  90.          targ_owner.speed = targ_owner.speed - LASERTARG_LIT;
  91.          sprint(targ_owner, "Laser sight off\n");
  92.       }
  93.       else
  94.       {
  95.          targ_owner.speed = targ_owner.speed | LASERTARG_LIT;
  96.          sprint(targ_owner, "Laser sight lit\n");
  97.       }
  98.  
  99.       targ_owner.speed = targ_owner.speed - LASERTARG_ON;
  100.    }
  101.    else
  102.    {
  103.       targ_owner.speed = targ_owner.speed | LASERTARG_ON;
  104.  
  105.       e = spawn();
  106.       e.owner = targ_owner;
  107.  
  108.       e.movetype = MOVETYPE_NONE;
  109.       e.solid = SOLID_NOT;
  110.  
  111. //** PATCH_BEGIN - lazsight - Turrican ****
  112. // Using the laser sight model from Ultimate Quake.
  113. //      setmodel( e, "progs/s_bubble.spr" );
  114. //      setmodel (self, "progs/lazsight.mdl");
  115. //** PATCH_END - lazsight - Turrican ******
  116.       setsize( e, VEC_ORIGIN, VEC_ORIGIN );
  117.       setorigin( e, e.owner.origin );
  118.  
  119.       if( (e.owner.speed & LASERTARG_LIT) )
  120.          e.effects = e.effects | EF_DIMLIGHT;
  121.  
  122.       e.nextthink = time + 0.1;
  123.       e.think = LaserTargeterTrack;
  124.  
  125.      sprint(targ_owner, "Laser sight on\n");
  126.  
  127.     }
  128.  
  129. };
  130. ////////////////////////////////////////////
  131.  
  132.